import { IPSDataEntityObject } from '../ipsdata-entity-object';
import { IPSDEDataExportGroup } from './ipsdedata-export-group';
import { IPSDEDataExportItem } from './ipsdedata-export-item';
import { IPSSysPFPlugin } from '../../res/ipssys-pfplugin';
import { IPSSysSFPlugin } from '../../res/ipssys-sfplugin';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDEDataExport
 */
export interface IPSDEDataExport extends IPSDataEntityObject {
  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 分组级别
   * @type {number}
   * @default 0
   */
  groupLevel: number;

  /**
   * 最大记录数
   * @type {number}
   */
  maxRowCount: number;

  /**
   * 性能优化预警时长（ms）
   * @type {number}
   * @default -1
   */
  pOTime: number;

  /**
   * 导出分组集合
   *
   * @type {IPSDEDataExportGroup[]}
   */
  getPSDEDataExportGroups(): IPSDEDataExportGroup[] | null;

  /**
   * 导出分组集合
   *
   * @type {IPSDEDataExportGroup[]}
   */
  get psDEDataExportGroups(): IPSDEDataExportGroup[] | null;

  findPSDEDataExportGroup(objKey: any): IPSDEDataExportGroup | null;

  /**
   * 导出项集合
   *
   * @type {IPSDEDataExportItem[]}
   */
  getPSDEDataExportItems(): IPSDEDataExportItem[] | null;

  /**
   * 导出项集合
   *
   * @type {IPSDEDataExportItem[]}
   */
  get psDEDataExportItems(): IPSDEDataExportItem[] | null;

  findPSDEDataExportItem(objKey: any): IPSDEDataExportItem | null;

  /**
   * 前端扩展插件
   *
   * @type {IPSSysPFPlugin}
   */
  getPSSysPFPlugin(): IPSSysPFPlugin | null;

  /**
   * 前端扩展插件
   *
   * @type {IPSSysPFPlugin}
   */
  get psSysPFPlugin(): IPSSysPFPlugin | null;

  /**
   * 前端扩展插件（必须存在）
   *
   * @type {IPSSysPFPlugin}
   */
  getPSSysPFPluginMust(): IPSSysPFPlugin;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  get psSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件（必须存在）
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPluginMust(): IPSSysSFPlugin;

  /**
   * 默认导出
   * @type {boolean}
   * @default false
   */
  defaultMode: boolean;

  /**
   * 支持后台执行
   * @type {boolean}
   */
  enableBackend: boolean;

  /**
   * 支持前台执行
   * @type {boolean}
   */
  enableFront: boolean;
}
